﻿using MaterialDesignThemes.Wpf;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 基于WPF的电缆采样数据分析系统.Models.Enums;
using 基于WPF的电缆采样数据分析系统.Models.FileLogs;
using 基于WPF的电缆采样数据分析系统.Service;

namespace 基于WPF的电缆采样数据分析系统.ViewModels.TDRWork.TaskPage
{
    public class RecentUsedFileUCViewModel : BindableBase, IDialogHostAware
    {

        // 主机名
        private const string DialogHostName = "RootDialog";

        #region 确定
        /// <summary>
        /// 确定命令
        /// </summary>
        public DelegateCommand SaveCommand { get; set; }

        /// <summary>
        /// 确定方法
        /// </summary>
        private void SaveFun()
        {

        }
        #endregion

        #region 取消
        /// <summary>
        /// 取消命令
        /// </summary>
        public DelegateCommand CancelCommand { get; set; }

        /// <summary>
        /// 取消方法
        /// </summary>
        private void CancelFun()
        {
            if (DialogHost.IsDialogOpen(DialogHostName))
            {
                DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.No));
            }
        }
        #endregion

        /// <summary>
        /// 打开过程中
        /// </summary>
        /// <param name="parameters"></param>
        public void OnDialogOpening(IDialogParameters parameters)
        {
            UsedFileLogList = GlobalVariableEdit.UsedFileLogList;

            for (int i = 0; i < UsedFileLogList.Count; i++)
            {
                ShowUsedFileLogList.Add(UsedFileLogList[i]);
            }
        }

        /// <summary>
        /// 构造器
        /// </summary>
        public RecentUsedFileUCViewModel()
        {
            // 绑定确定和取消命令
            SaveCommand = new DelegateCommand(SaveFun);
            CancelCommand = new DelegateCommand(CancelFun);

            // 绑定切换日志类型命令
            LogSelectionChangedCmm = new DelegateCommand<int?>(LogSelectionChangedFun);
        }


        #region 最近使用文件日志集合
        /// <summary>
        /// 最近使用文件日志集合
        /// </summary>
        private ObservableCollection<UsedFileLog> _UsedFileLogList;

        /// <summary>
        /// 最近使用文件日志集合
        /// </summary>
        public ObservableCollection<UsedFileLog> UsedFileLogList
        {
            get { return _UsedFileLogList; }
            set { 
                _UsedFileLogList = value;
                RaisePropertyChanged();
            }
        }


        /// <summary>
        /// 要显示的最近使用文件日志集合
        /// </summary>
        private ObservableCollection<UsedFileLog> _ShowUsedFileLogList = new ObservableCollection<UsedFileLog>();

        /// <summary>
        /// 要显示的最近使用文件日志集合
        /// </summary>
        public ObservableCollection<UsedFileLog> ShowUsedFileLogList
        {
            get { return _ShowUsedFileLogList; }
            set { 
                _ShowUsedFileLogList = value;
                RaisePropertyChanged();
            }
        }


        #endregion


        #region 切换日志类型
        /// <summary>
        /// 切换日志类型命令
        /// </summary>
        public DelegateCommand<int?> LogSelectionChangedCmm { get; set; }

        /// <summary>
        /// 切换日志类型方法
        /// </summary>
        /// <param name="SelectedIndex"></param>
        private void LogSelectionChangedFun(int? SelectedIndex)
        {   

            // 清空显示的使用文件日志
            ShowUsedFileLogList.Clear();

            // 
            if (SelectedIndex == 5)
            {
                for (int i = 0; i < UsedFileLogList.Count; i++)
                {
                    ShowUsedFileLogList.Add(UsedFileLogList[i]);
                }
            }

            // 重新赋值
            List<UsedFileLog> usedFileLogs = UsedFileLogList.Where(u => u.FileType == (FileType)(SelectedIndex)).ToList();

            for (int i = 0; i < usedFileLogs.Count; i++)
            {
                ShowUsedFileLogList.Add(usedFileLogs[i]);
            }
        }
        #endregion
    }
}
